277. elastic ,index 消失相關查詢方式
WHY
同事問,為什麼我前五天的index消失了。
我震驚,不應該啊。
開始漫長的查詢之路
NOTE
filebeat 重新上傳
直接看indices的內容,
真的沒有前幾天的資料,但文件還在,
那不然先把文件重傳回來好了。
filebeat靠registry底下的檔案(k8s內的路徑為/usr/share/filebeat/data/registry/filebeat/data.json
,
來判斷這個文件有沒有讀取過,
所以將這個資料夾底下的檔案清空,重啟Pod,就會觸發強制重傳了。
rm -rvf /usr/share/filebeat/data/registry
題外話,然後因為前面的文件太多沒刪除,
導致elk的硬碟直接塞滿。
檢查index的ILM 有沒有生效
先確認ilm的政策正確,下面會列出全部的ilm,看是不是跟你想像的一樣。
GET /_ilm/policy?pretty
or
GET _ilm/policy/delete-bms-indices-after-7days?pretty
結果如下,
建立index時,會馬上進入到hot 的phases(根據min_age=0ms),
然後14天後,會到delete的phases(min_age=14d)。
"delete-bms-indices-after-7days": {
"version": 4,
"modified_date": "2024-10-23T08:49:16.681Z",
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "14d",
"actions": {
"delete": {
"delete_searchable_snapshot": true
}
}
}
}
}
再來看index的 ilm
GET /qa-game-cold-back-gamecoldtransdata-2024.12/_ilm/explain
內容如下,目前建立了5.23d,要到14d可能還要一陣子,
先放著之後看結果。
{
"indices": {
"qa-game-cold-back-gamecoldtransdata-2024.12": {
"index": "qa-game-cold-back-gamecoldtransdata-2024.12",
"managed": true,
"policy": "delete-bms-indices-after-7days",
"index_creation_date_millis": 1743131249510,
"time_since_index_creation": "5.23d",
"lifecycle_date_millis": 1743131249510,
"age": "5.23d",
"phase": "hot",
"phase_time_millis": 1743131249629,
"action": "complete",
"action_time_millis": 1743131249829,
"step": "complete",
"step_time_millis": 1743131249829,
"phase_execution": {
"policy": "delete-bms-indices-after-7days",
"phase_definition": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 100
}
}
},
"version": 4,
"modified_date_in_millis": 1729673356681
}
}
}
}
結論
突然靈光一閃,猜測有可能是因為index我是以月為單位留存的,
為什麼index不以天留存呢?因為以前曾經發生過shared數量太多,
導致機器卡住。
但刪除的天數是14天,
所以ilm執行時就直接將這個index刪掉。
未驗證
如果ILM更改很大,但舊的index沒有進入到新的階段,
讓ILM重新評估。
POST _ilm/run
如果還是沒成功,
手動將index推到新的phase
POST /<your-index>/_ilm/move
{
"current_step": { "phase": "hot", "action": "complete", "name": "complete" },
"next_step": { "phase": "delete", "action": "delete", "name": "delete" }
}